﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Croupier_iteration_1.Model;
using System.Collections.ObjectModel;
using Croupier_iteration_1.Model.Jeu;

namespace Croupier_iteration_1.ViewModel
{
    public class TableViewModel :AbstractViewModel 
    {
        public TableJeu Table {get; set;}
        public int Id { get; private set; }
        public string Nom { get; set; }
        public CroupierViewModel Croupier { get; set; }
        public ObservableCollection<JoueurViewModel> Joueurs { get; set; }
        public JeuDeCartes Jeu { get; set; }

        public TableViewModel(TableJeu table)
        {
            this.Id = table.Id;
            this.Nom = table.Nom;
            this.Joueurs = new ObservableCollection<JoueurViewModel>();
            foreach (var joueur in table.Joueurs)
	        {
                this.Joueurs.Add(new JoueurViewModel(joueur));
	        }          
          
            this.Croupier = new CroupierViewModel(table.Croupier);

            this.Table = table;
        }
        
        public void AddJoueur()
        {
            // crer un joueur
            Joueur joueur;

            joueur = new Joueur();
            joueur.Nom = "Nouveu";
            joueur.Prenom = "Prenom";

            // ajouter un joueur a notre table
            Table.AddJoueur(joueur);

            // associer un view model a notre joueur
            JoueurViewModel joueurViewModel;
            joueurViewModel = new JoueurViewModel(joueur);
            
            Joueurs.Add(joueurViewModel);
            // ajouter notre joueur view model a notre table view model            
        }

        public void AddJoueurPopup(Joueur joueur)
        {
            // ajouter un joueur a notre table
            Table.AddJoueur(joueur);

            // associer un view model a notre joueur
            JoueurViewModel joueurViewModel;
            joueurViewModel = new JoueurViewModel(joueur);

            Joueurs.Add(joueurViewModel);
            // ajouter notre joueur view model a notre table view model            
        }

        public void TirerCarte(JoueurViewModel joueurViewModel)
        {
            if (joueurViewModel.MainVM.Total > 21)
            {
                MessageBox.Show("Vous ne pouvez plus tirez de carte, Vous avez perdu", "Perdu", MessageBoxButton.OK);
            }
            else if (joueurViewModel.MainVM.Total == 21)
            {
                MessageBox.Show("Aucun Interet de piocher vous avez gagné", "Gagné", MessageBoxButton.OK);
            }
            else
            {
                var carte = Table.DemanderCarte();
                joueurViewModel.addCarte(carte);
            }
        }
    }
}
